Date.prototype.yyyymmdd = function() {
	var yyyy = this.getFullYear().toString();
	var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
	var dd  = this.getDate().toString();
	
	return yyyy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0]); // padding
};

// 도미토리
var Dormitory = function(){
	
	var dormitoryJsonStr = localStorage.getItem("dormitory");
	
	if(dormitoryJsonStr != undefined){
		var obj = JSON.parse(dormitoryJsonStr);

		this.memberList = obj.memberList;
		this.roomList = obj.roomList;
		this.bedList = obj.bedList;
		this.bookList = obj.bookList;
		this.tourList = obj.tourList;
	}else{
		this.memberList = new Array();
		this.roomList = new Array();
		this.bedList = new Array();
		this.bookList = new Array();
		this.tourList = new Array();
	}
	
};

Dormitory.prototype.getRoomList = function(){
	return this.roomList;
};

// 오늘의 일정
Dormitory.prototype.getTodaySchedule = function(){
	
	var schedule = {
		checkIn : 0,
		checkOut : 0,
		tour : 0
	};
	
	var today = new Date();
	
	for(var i=0; this.bookList != null && i<this.bookList.length; i++){
		
		if(this.bookList[i].checkInDt == today.yyyymmdd()){
			schedule.checkIn++;
		}
		
		if(this.bookList[i].checkOutDt == today.yyyymmdd()){
			schedule.checkOut++;
		}
	}
	
	for(var i=0; this.tourList != null && i<this.tourList.length; i++){
		if(this.tourList[i].tourDt == today.yyyymmdd()){
			schedule.tour++;
		}
	}
	
	return schedule;
	
};

// 회원 추가
Dormitory.prototype.addMember = function(member){
	this.memberList.push(member);
};

// 방 추가
Dormitory.prototype.addRoom = function(room){
	this.roomList.push(room);
};

// 침대 추가
Dormitory.prototype.addBed = function(bed){
	this.bedList.push(bed);
};

// 예약 추가
Dormitory.prototype.addBook = function(book){
	this.bookList.push(book);
};

Dormitory.prototype.addTour = function(tour){
	this.tourList.push(tour);
};

// 회원
var Member = function(id, pwd, name, guestHouseName){
	this.id = id;
	this.pwd = pwd;
	this.name = name;
	this.guestHouseName = guestHouseName;
};

// 예약
var Book = function(checkInDt, checkOutDt, customerNo, customerName, personCnt, phoneNumber){
	this.checkInDt = checkInDt;
	this.checkOutDt = checkOutDt;
	this.customerNo = customerNo;
	this.customerName = customerName;
	this.personCnt = personCnt;
	this.phoneNumber = phoneNumber;
};

// 침대
var Bed = function(name, currentCustomerNo){
	this.name = name;
	this.currentCustomerNo = currentCustomerNo;
};

// 방
var Room = function(no, name, maxPersonCnt){
	this.no = no;
	this.name = name;
	this.maxPersonCnt = maxPersonCnt;
};

// 투어
var Tour = function(){
	this.tourDt = tourDt;
	this.customerList = new Array();
};

Tour.prototype.addTourMember = function(customer){
	this.customerList.push(customer);
};
/*

*//** 
 * 자신의 element 중 중복된 element가 있는지 체크
 *//*
TreeFolder.prototype.hasElement = function(element){
	var hasElement = false;
	
	for(var i=0; i<this.children.length; i++){
		if(!hasElement && this.children[i].key == element.key){
			hasElement = true;
		}
	}
	
	return hasElement;
};

*//** 
 * 하위 개체 추가 (TreeFolder or TreeFile)
 *//*
TreeFolder.prototype.addElementByKey = function(key, element){
	
	// 현재 개체의 그룹코드와 넘겨받은 그룹코드가 같은 경우 자신의 element로 추가한다.
	// 이미 추가된 그룹인 경우를 제외하고 추가한다.
	if(this.key == key){
		if(!this.hasElement(element)){
			this.addElement(element);
		}
	// 현재 개체의 그룹코드와 넘겨받은 그룹코드가 같지 않은 경우 자신의 element 개체로 값을 넘긴다.
	}else{
		for(var i=0; i<this.children.length; i++){
			// children 중 그룹 개체인 경우에만 넘겨준다.
			if(this.children[i] instanceof TreeFolder){
				this.children[i].addElementByKey(key, element);
			}
		}
	}
	
	
};


*//** 
 * 저장된 정보로 관련 태그를 만들어서 반환한다. 
 *//*
TreeFolder.prototype.getTag = function(){
	var tagStr = "<li><span class=\"folder\" keyVal=\"" + this.key + "\">" + this.name + "</span>";
	
	tagStr += "<ul>";
	
	for(var i=0; i<this.children.length; i++){
		tagStr += this.children[i].getTag();
	}
	
	tagStr += "</ul>";
	
	tagStr += "</li>";
	
	return tagStr;
};





*//**
 * 파일 개체
 * @param name - 사원명
 * @param key - 사원코드
 * @param state - 사원상태
 * @param level - 직급
 * @param chief - 그룹장코드
 * @param parentKey - 소속그룹코드
 *//*
var TreeFile = function(name, key, state, level, chief, parentKey, cell1, cell2, cell3, role, adminYn){
	*//** 사원명 *//*
	this.name = name;
	*//** 사원코드 *//*
	this.key = key;
	*//** 사원상태 *//*
	this.state = state;
	*//** 사원직급 *//*
	this.level = level;
	*//** 그룹장코드 *//*
	this.chief = chief;
	*//** 소속그룹코드 *//*
	this.parentKey = parentKey;
	*//** 핸드폰 첫째자리 *//*
	this.cell1 = cell1;
	*//** 핸드폰 둘째자리 *//*
	this.cell2 = cell2;
	*//** 핸드폰 셋째자리 *//*
	this.cell3 = cell3;
	*//** 직책 *//*
	this.role = role;
	*//** 직책 *//*
	this.adminYn = adminYn;
};

*//** 
 * 저장된 정보로 관련 태그를 만들어서 반환한다. 
 *//*
TreeFile.prototype.getTag = function(){
	
	// 추가 할 클래스명
	var addClass = "";
	// 상태 코드에 해당하는 한글 상태명
	var stateStr = "";

	// 그룹장인 경우 chief 클래스를 추가해야 한다.
	if(this.chief != null && this.chief != ""){
		addClass = "chief";
	}
	
	// 휴직 중인 경우
	if(this.state == "1"){
		addClass = "pause";
		stateStr = "(휴직)";
	// 인턴인 경우
	}else if(this.state == "2"){
		addClass = "new";
		stateStr = "(인턴)";
	}else if(this.state == "0"){
		
	}
	
	var tagStr = "<li><span class=\"file " + addClass + "\" keyVal=\"" + this.key + "\" parentKey=\"" + this.parentKey 
				 + "\" name=\"" + this.name + "\" level=\"" + this.level + "\" state=\"" + this.state 
				 + "\" cell1=\"" + this.cell1 + "\" cell2=\"" + this.cell2 + "\" cell3=\"" + this.cell3 
				 + "\" role=\"" + this.role + "\" adminYn=\"" + this.adminYn + "\">" 
				 + this.name + " " + this.level + stateStr + "</span></li>";
	
	return tagStr;
	
};


// CUD 처리
var targetURL = CONTEXT_PATH + "/group/procAjax.do" ;

// 미등록 사원 리스트
var targetURL2 = CONTEXT_PATH + "/group/getMemberListAjax.do" ;


var groupParam = {
		"dept_name" :  ""
		, "dept_no" :""
		, "flag"  : ""
		, "dept_parent_no"  : ""
};

var memberParam = {
		"member_srl" :  ""
		, "user_name" :""
		, "emp_position"  : ""
		, "emp_chief"  : ""
		, "my_dept_no"  : ""
		, "emp_state"  : ""
		, "cell1"  : ""
		, "cell2"  : ""
		, "cell3"  : ""
		, "emp_sort"  : ""
		, "flag"  : ""
		, "emp_role"  : ""
		, "admin_yn"  : ""
};

// 현재 선택된 그룹코드
var groupSrl = "";

// 현재 선택된 사원코드
var memberSrl = "";

// 현재 선택된 사원의 그룹코드
var myGroupSrl = "";

// 마우스 우클릭 시 context menu 뜨는 것 방지..
(function( $ ) {
  $.fn.rightClick = function(method) {

    $(this).bind('contextmenu rightclick', function(e){
        e.preventDefault();
        method(e, $(this));
        return false;
    });

  };
})( jQuery );

// jsp 페이지 로딩 시 수행
$(document).ready(function(){
	
	// first example
	$("#browser").treeview({
		   persist: "cookie"
	});
	
	// 다이얼로그 설정
	$("#dialogGroup, #dialogMember, #dialogGroupUpdate, #dialogMemberUpdate").dialog({
		autoOpen: false,
		show: "blind",
		hide: "explode",
		modal: true,
		width: "500"
	});
	
	// 그룹 추가 팝업
	$("#btnGroupAdd").click(function(){
		if(groupSrl != ""){
			$("#dialogGroup").dialog("open");
		}else{
			alert("그룹을 먼저 선택하세요.");
		}
		
		return false;
	});
	
	// 그룹 저장 콜백
	function memberListCallback(result){ 
		
		var initStr = 	"<colgroup>" + 
							"<col width=\"10px\"/>" + 
							"<col width=\"50px\"/>" + 
							"<col width=\"50px\"/>" +
						"</colgroup>" + 
						"<tr>" + 
							"<th>선택</th>" +
							"<th>성명</th>" +
							"<th>아이디</th>" +
						"</tr>";
		
		// 화면 초기화
		$("#tblMember").html(initStr);
		
		var data = JSON.parse(result);
		
		var tr = "";
		
		for(var i=0; i<data.length; i++){
			tr += "<tr>";
			tr += "<td style=\"text-align: center;\"><input type=\"checkbox\" class=\"chk\" value=\"" + data[i].member_srl + "\" uname=\"" + data[i].user_name + "\"/></td>";
			tr += "<td>" + data[i].user_name + "</td>";
			tr += "<td>" + data[i].user_id + "</td>";
			tr += "</tr>";
		}
		
		$("#tblMember").append(tr);
		
		$("#dialogMember").dialog("open");
	}
	
	// 사원 추가 팝업
	$("#btnMemberAdd").click(function(){
		
		if(groupSrl != ""){
			requestAjax(targetURL2, memberParam, memberListCallback);
		}else{
			alert("그룹을 먼저 선택하세요.");
		}
		
		return false;
	});

	// 사원에 마우스를 올렸을 경우
	$(".file").live("hover", function(){
		//document.body.style.cursor = 'pointer';
	});
	
	// 그룹을 선택하였을 경우
	$(".folder").live("click",  function(e) {
		// 선택한 그룹코드를 저장
		groupSrl = $(this).attr("keyval");
		$(".selectedGroupName").text($(this).text());
    });
	
	// 그룹을 선택하였을 경우
	$(".folder").rightClick(function(e, my) {
		// 선택한 그룹코드를 저장
		groupSrl = my.attr("keyval");
		$(".selectedGroupName").text(my.text());
		$("#groupNameModify").val(my.text());
		
		$("#dialogGroupUpdate").dialog("open");
    });
	
	// 사원을 선택하였을 경우
	$(".file").live("click", function(e) {
		memberSrl = $(this).attr("keyval");
		myGroupSrl = $(this).attr("parentKey");
		
		memberParam.memberSrl = memberSrl;
		
		$("#memberNameModify").val($(this).attr("name"));
		$("#memberPositionModify").val($(this).attr("level"));
		$("#memberStateModify").val($(this).attr("state"));
		$("#memberRoleModify").val($(this).attr("role"));
		$("#memberAdminYnModify").val($(this).attr("adminYn"));
		
		$("#cell1Modify").val($(this).attr("cell1"));
		$("#cell2Modify").val($(this).attr("cell2"));
		$("#cell3Modify").val($(this).attr("cell3"));
		
		$("#dialogMemberUpdate").dialog("open");
    });

	// sortable 이벤트 핸들링
	$("ul").sortable({
		stop: function(event, ui) {
			
			ui.helper - the current helper element (most often a clone of the item)
			ui.position - current position of the helper
			ui.offset - current absolute position of the helper
			ui.item - the current dragged element
			ui.placeholder - the placeholder (if you defined one)
			ui.sender - the sortable where the item comes from (only exists if you move from one connected list to another)
			
			
			//alert($(this).children().length);
			//requestAjax(targetURL, memberParam, changeIdxCallback);
			
			for(var i=0; i<$(this).children().length; i++){
				
				memberParam.member_srl = $($(this).children()[i].firstChild).attr("keyVal");
				memberParam.emp_sort = 9998 - i;
				memberParam.flag = "MIC";
				
				requestAjax(targetURL, memberParam, changeIdxCallback);
				
			}
			
		}
	});
	
	// 그룹 저장 콜백
	function changeIdxCallback(result){ 
		if($.trim(result) == "0"){
			//alert("변경되었습니다.");
			//document.location.href = CONTEXT_PATH + "/group/list.do";
		}
	}
	
	// 그룹 저장 콜백
	function saveGroupCallback(result){ 
		if($.trim(result) == "0"){
			alert("저장되었습니다.");
			document.location.href = CONTEXT_PATH + "/group/list.do";
		}
	}
	
	// 그룹 삭제 콜백
	function deleteGroupCallback(result){ 
		if($.trim(result) == "0"){
			alert("삭제되었습니다.");
			document.location.href = CONTEXT_PATH + "/group/list.do";
		}else{
			alert("그룹 하위의 그룹 또는 사원이 존재합니다.");
		}
	}
	
	// 사원 저장 콜백
	function saveMemberCallback(result){ 
 
		if($.trim(result) == "0"){
			alert("저장되었습니다.");
			document.location.href = CONTEXT_PATH + "/group/list.do";
		}
	}
	
	// 사원 삭제 콜백
	function deleteMemberCallback(result){
	
		if($.trim(result) == "0"){
			alert("삭제되었습니다.");
			document.location.href = CONTEXT_PATH + "/group/list.do";
		}
	}
	
	// 사원 그룹장으로 변경 콜백
	function updateChiefCallback(result){ 
 
		if($.trim(result) == "0"){
			alert("변경되었습니다.");
			document.location.href = CONTEXT_PATH + "/group/list.do";
		}
	}
	
	// 그룹 등록
	$("#btnGroupSave").click(function(){
		
		if(!nullCheck("그룹명", $("#groupName").val())){
			$("#groupName").focus();
			return;
		}
		
		groupParam.dept_name = $("#groupName").val(); 
		groupParam.flag = "GI";
		groupParam.dept_parent_no = groupSrl ;
		
		requestAjax(targetURL, groupParam, saveGroupCallback);
		
	});
	
	// 그룹 삭제
	$("#btnGroupDelete").click(function(){
		if(groupSrl != ""){
			if(confirm("정말 삭제하시겠습니까?")){
				groupParam.dept_no = groupSrl; 
				groupParam.flag = "GD";
				
				requestAjax(targetURL, groupParam, deleteGroupCallback);
			}
		}else{
			alert("삭제할 그룹을 선택하세요.");
		}
		
	});
	
	// 그룹 수정
	$("#btnGroupUpdate").click(function(){
		
		if(!nullCheck("그룹명", $("#groupNameModify").val())){
			$("#groupNameModify").focus();
			return;
		}
		
		groupParam.dept_name = $("#groupNameModify").val(); 
		groupParam.flag = "GU";
		groupParam.dept_no = groupSrl ;
		
		requestAjax(targetURL, groupParam, saveGroupCallback);
		
	});
	
	// 사원 등록
	$("#btnMemberSelect").click(function(){
		
		var selectedData = getSelectedValue();
		
		if(selectedData != ""){
			memberParam.member_srl = selectedData;
			memberParam.user_name = $("#memberName").val(); 
			memberParam.flag = "MI";
			memberParam.my_dept_no = groupSrl;
			memberParam.emp_position = $("#memberPosition").val();
			memberParam.emp_chief = $("#memberChief").val();
			memberParam.emp_state = $("#memberState").val();
			memberParam.emp_role = $("#memberRole").val();
			
			requestAjax(targetURL, memberParam, saveMemberCallback);
		}else{
			alert("선택된 사원이 없습니다.");
		}
	});
	
	
	// 사원 삭제
	$("#btnMemberDelete").click(function(){
		
		if(memberSrl != ""){
			if(confirm("정말 삭제하시겠습니까?")){
				memberParam.member_srl = memberSrl; 
				memberParam.flag = "MD";
				
				requestAjax(targetURL, memberParam, deleteMemberCallback);
			}
		}else{
			alert("삭제할 사원을 선택하세요");
		}
		
	});
	
	// 사원 수정
	$("#btnMemberUpdate").click(function(){
		
		var chkVal = document.getElementById("memberNameModify");
		
		var validity = chkVal.validity;
		
		if(validity == "undefined"){
			alert("html5를 지원하지 않는 브라우저입니다.");
			return;
		}
		
		memberParam.member_srl = memberSrl;
		
		if(!nullCheck("사원명", $("#memberNameModify").val())){
			$("#memberNameModify").focus();
			return;
		}
		
		memberParam.user_name = $("#memberNameModify").val();
		memberParam.flag = "MU";
		memberParam.emp_position = $("#memberPositionModify").val();
		memberParam.emp_chief = $("#memberChiefModify").val();
		memberParam.emp_state = $("#memberStateModify").val();
		memberParam.emp_role = $("#memberRoleModify").val();
		memberParam.admin_yn = $("#memberAdminYnModify").val();
		
		memberParam.cell1 = $("#cell1Modify").val();
		memberParam.cell2 = $("#cell2Modify").val();
		memberParam.cell3 = $("#cell3Modify").val();
		
		requestAjax(targetURL, memberParam, saveMemberCallback);
		
	});
	
	// 해당 그룹의 그룹장으로 변경
	$("#btnMemberUpdateChief").click(function(){
		if(confirm("기존 그룹장은 권한이 없어집니다. 계속 하시겠습니까?")){
			memberParam.member_srl = memberSrl;
			memberParam.flag = "MUC";
			memberParam.emp_chief = myGroupSrl;
			memberParam.my_dept_no = myGroupSrl;
			
			requestAjax(targetURL, memberParam, updateChiefCallback);
		}
	});
	
	// 숫자만 입력되도록..
	$(".number").blur(function(){
		if(/[^0123456789]/g.test($(this).val())) {
			alert("숫자가 아닙니다.");
			$(this).val("");
			$(this).focus();
		}
	});
});

//공백 체크
function nullCheck(name, objVal){
	if(objVal.trim() == ""){
		alert(name + "을(를) 입력하세요");
		return false;
	}
	
	return true;
}

//선택된 데이터 가져오기
function getSelectedValue(){
	
	var selectedData = "";
	
	$(".chk").each(function(){
		if($(this).is(":checked")){
			var member_srl = $(this).val();
			var user_name = $(this).attr("uname");
			
			selectedData += member_srl + "_" + user_name + ",";
		}
	});
	
	return selectedData;
}
*/

